<?php
declare (strict_types = 1);
namespace app\common\model;
use think\Model;

class Example extends Base
{
	/**
	 * 获取数据列表
	 * @param Array $params 二维参数数组，格式如下：
 	 *   @param Array where 查询条件
 	 *   @param Array field 字段列表
	 * @return Array $res [0-失败 1-成功 2-结果为空]
	 */
	public function getDataList(array $params=[]) : array
	{
		// 预定义返回数据
		$res = [
			'status' => 0,
			'err_msg' => '',
			'data' => null
		];

		// 检查参数
		if($this->Validate !== false)
		{
			$check = $this->Validate->scene(__FUNCTION__)->check($params);
			if(!$check)
			{
				$err_msg = $this->Validate->getError();
				// 处理错误日志
				Base::saveLog(1, $err_msg);

				$res['err_msg'] = '获取数据列表失败：查询错误';
				return $res;
			}
		}

		$data_list = $this;
		// 处理查询条件
		if(isset($params['where']))
		{
			$data_list = $data_list->where($params['where']);
		}
		// 处理查询字段
		if(isset($params['field']))
		{
			$data_list = $data_list->field($params['field']);
		}
		// 执行查询
		try
		{
			$data_list = $data_list->select();
			if( $data_list->isEmpty() )
			{
				$res['status'] = 2;
				$res['err_msg'] = '数据列表为空';
				return $res;
			}
		}
		catch(\Exception $e)
		{
			$err_msg = $e->getMessage();
			// 处理错误日志
			Base::saveLog(1, $err_msg);

			$res['err_msg'] = '获取数据列表失败：数据库错误';
			return $res;
		}

		$res['status'] = 1;
		$res['data'] = $data_list->toArray();
		return $res;
	}


}
